Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

270 lines
11 KiB

VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "Queries"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
'Private wsoServices As DIWbemServices
Private wsoServices As ISWbemServices
Private numPasses As Integer
Private numFails As Integer
Private Passes As New Collection
Private Fails As New Collection
Private Sub AddPass(s As String)
Passes.Add s, Trim(Str(numPasses))
numPasses = numPasses + 1
End Sub
Private Sub AddFail(s As String)
Fails.Add s, Trim(Str(numFails))
numFails = numFails + 1
End Sub
Private Sub BuildList()
AddPass "Monkeybutt!"
AddPass "SELECT * FROM SMS_PropertyDisplayNode"
AddPass "SELECT Nodename from SMS_PropertyDisplayNode"
AddPass "SELECT Nodename from SMS_PropertyDisplayNode P"
AddPass "SELECT P.Nodename from SMS_PropertyDisplayNode P"
AddPass "SELECT Count(*) FROM SMS_PropertyDisplayNode"
AddPass "SELECT Count(Nodename) FROM SMS_PropertyDisplayNode"
AddPass "SELECT Count(SMS_PropertyDisplayNode.Nodename) FROM SMS_PropertyDisplayNode"
AddPass "SELECT Count(P.Nodename) FROM SMS_PropertyDisplayNode P"
AddPass "SELECT DISTINCT * FROM SMS_PropertyDisplayNode"
AddPass "SELECT DISTINCT Nodename FROM SMS_PropertyDisplayNode"
AddPass "SELECT DISTINCT SMS_PropertyDisplayNode.Nodename from SMS_PropertyDisplayNode"
AddPass "SELECT DISTINCT P.Nodename from SMS_PropertyDisplayNode P"
AddPass "SELECT * FROM SMS_Site, SMS_SiteControlFile"
AddPass "SELECT SMS_Site.Sitename FROM SMS_Site, SMS_SiteControlFile"
AddPass "SELECT P.Sitename FROM SMS_Site P,SMS_SiteControlFile"
AddPass "SELECT P.Sitename FROM SMS_Site P,SMS_SiteControlFile R"
AddPass "SELECT * FROM SMS_Site JOIN SMS_SiteControlFile ON SMS_Site.Sitecode=SMS_SiteControlFile.Sitecode"
AddPass "SELECT * FROM SMS_Site P JOIN SMS_SiteControlFile ON P.Sitecode=SMS_SiteControlFile.Sitecode"
AddPass "SELECT * FROM SMS_Site P JOIN SMS_SiteControlFile R ON P.Sitecode=R.Sitecode"
AddPass "SELECT SMS_Site.Sitename FROM SMS_Site JOIN SMS_SiteControlFile ON SMS_Site.Sitecode=SMS_SiteControlFile.Sitecode"
AddPass "SELECT P.Sitename FROM SMS_Site P JOIN SMS_SiteControlFile ON P.Sitecode=SMS_SiteControlFile.Sitecode"
AddPass "SELECT P.Sitename FROM SMS_Site P JOIN SMS_SiteControlFile R ON P.Sitecode=R.Sitecode"
AddPass "SELECT * FROM SMS_Site WHERE Sitecode=""ABC"""
AddPass "SELECT * FROM SMS_Site WHERE Sitecode=""ABC"" AND Sitename=""blah"""
AddPass "SELECT * FROM SMS_Site WHERE Sitecode=""ABC"" OR Sitename=""blah"""
AddPass "SELECT * FROM SMS_Site WHERE NOT Sitecode=""ABC"""
AddPass "SELECT * FROM SMS_Site WHERE NOT Sitecode=""ABC"" AND Sitename=""blah"""
AddPass "SELECT * FROM SMS_Site WHERE NOT Sitecode=""ABC"" OR Sitename=""blah"""
AddPass "SELECT * FROM SMS_Site WHERE NOT (Sitecode=""ABC"" AND Sitename=""blah"")"
AddPass "SELECT * FROM SMS_Site WHERE NOT (Sitecode=""ABC"" OR Sitename=""blah"")"
'kludgey fast queries to satisfy some deep seated desire lamar had at this exact moment
AddPass "SELECT * FROM SMS_PropertyDisplayNode Order By Nodekey"
AddPass "SELECT * FROM SMS_PropertyDisplayNode Group By Nodekey"
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey <= 7"
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey < 7"
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey >= 7"
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey < 7"
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey = 7"
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey != 7"
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey = 7 AND Classname=""SMS_G_System"""
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey = 7 OR Classname=""SMS_G_System"""
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Nodekey = 7 OR Classname=""SMS_G_System"" AND Nodekey=7"
AddPass "SELECT * FROM SMS_PropertyDisplayNode Where (NOT Nodekey = 7 OR Classname=""SMS_G_System"") AND Nodekey=7"
'this should work! but it doesn't.
'AddPass "SELECT * FROM SMS_PropertyDisplayNode Where Classname like %SMS_G_System%"
AddFail "SELECT Count(P.Sitename,R.BuildNumber) FROM SMS_Site P JOIN SMS_SiteControlFile R ON P.Sitecode=R.Sitecode"
''AddFail "SELECT PackageID FROM SMS_Package, SMS_Program"
''AddFail "SELECT PackageID FROM SMS_Package JOIN SMS_Program ON SMS_Package.PackageID=SMS_Program.PackageID"
''AddFail "SELECT PackageID FROM SMS_Package P JOIN SMS_Program ON P.PackageID=SMS_Program.PackageID"
''AddFail "SELECT PackageID FROM SMS_Package P JOIN SMS_Program R ON P.PackageID=R.PackageID"
''AddFail "SELECT P.Name FROM SMS_Package P JOIN SMS_Program R ON PackageID=PackageID"
''AddFail "SELECT P.Name FROM SMS_Package P JOIN SMS_Program R ON SMS_Package.PackageID=PackageID"
'AddFail "SELECT P.Name FROM SMS_Package P JOIN SMS_Program R ON P.PackageID=PackageID"
'AddFail "SELECT P.Name FROM SMS_Package P JOIN SMS_Program R ON R.PackageID=PackageID"
End Sub
Private Sub Class_Initialize()
frmMain.lstModules.AddItem "Queries"
frmMain.lstModules.Selected(frmMain.lstModules.ListCount - 1) = False
numPasses = 0
numFails = 0
BuildList
End Sub
Public Function GetModuleInfo() As String
GetModuleInfo = "Tests various WQL queries." & vbCrLf
GetModuleInfo = GetModuleInfo & "Keep in mind that this module isn't fully functional as of 5/4/98"
End Function
Public Sub RegisterNodes()
Dim i As Integer
Dim s As String
i = 0
frmTest.AddNode "root", "qRoot", "Queries"
frmTest.AddNode "qRoot", "qConnect", "Connect"
'frmTest.AddNode "qRoot", "qWarning", "Warning Message"
frmTest.AddNode "qRoot", "qPass", "Queries that should succeed"
frmTest.AddNode "qRoot", "qFail", "Queries that should fail"
For i = 0 To numPasses - 1
s = Passes(Trim(Str(i)))
frmTest.AddNode "qPass", "qP" & Trim(Str(i)), s, False
Tests.Add "Queries", "qP" & Trim(Str(i))
Next i
For i = 0 To numFails - 1
s = Fails(Trim(Str(i)))
frmTest.AddNode "qFail", "qF" & Trim(Str(i)), s, False
Tests.Add "Queries", "qF" & Trim(Str(i))
Next i
End Sub
Public Sub RegisterTests()
Tests.Add "Queries", "qConnect"
'Tests.Add "Queries", "qWarning"
'Rest of the tests are registered in RegisterNodes. Inappropriate, but it really doesn't matter.
End Sub
Public Function Execute(n As Node) As Integer
Select Case n.key
Case "qConnect"
Execute = qConnect(n)
'Case "qWarning"
'If Not frmTest.AllOfThesePassed("qConnect") Then
' Execute = 2
'Else
' Dim i As Integer
' i = MsgBox("These queries may crash CIMOM or the BVT. Continue?", vbYesNo + vbQuestion, "Warning")
' If i = vbNo Then
' Execute = 2
' Else
' Execute = 1
' End If
'End If
'Execute = 1
Case Else
If Left(n.key, 2) = "qP" Then
Execute = ExecQuery(n, n.text)
ElseIf Left(n.key, 2) = "qF" Then
Execute = ExecQuery(n, n.text)
If Execute = 0 Then
Execute = 1
Else
Execute = 0
End If
Else
Execute = 3
End If
End Select
End Function
Public Function ExecQuery(n As Node, query As String) As Integer
On Error Resume Next
If Not frmTest.AllOfThesePassed("qConnect") Then
ExecQuery = 2
Else
'Dim e As DIEnumWbemClassObject
'n.Tag = n.Tag & "ExecQuery: " & query & vbCrLf
'wsoServices.ExecQuery "wql", query, 0, Nothing, e
'If CheckError(Err.Number, n, query) Then Exit Function
'
'Dim c As DWbemClassObject
'Dim s() As String
'Dim i As Integer
'Dim v As Variant
'Do While e.Next(-1, c) = 0
' c.GetNames vbNullString, WBEM_FLAG_KEYS_ONLY, vbNullString, s
' If CheckError(Err.Number, n, "Getnames Keys Only") Then Exit Function
' n.Tag = n.Tag & "Getnames UBound: " & UBound(s) & vbCrLf
' n.Tag = n.Tag & "Getnames LBound: " & LBound(s) & vbCrLf
' For i = LBound(s) To UBound(s)
' c.Get s(i), 0, v, 0, 0
' If CheckError(Err.Number, n, "Get " & s(i)) Then Exit Function
' n.Tag = n.Tag & s(i) & "=" & CStr(v) & vbCrLf & "----" & vbCrLf
' Next i
'Loop
'ExecQuery = 1
'***************************
'catch the situation and debug it
If n.key = "qP25" Then Stop
'***************************
Dim c As ISWbemObject
Dim e As ISEnumWbemObject
Dim p As ISWbemProperty
Set e = wsoServices.ExecQuery(query, , 0)
If CheckError(Err.Number, n, query) Then Exit Function
For Each c In e
If Err <> 0 Then
Dim str1, str2, str3 As String
str1 = Err.Description
str2 = Err.Number
str3 = Err.Source
Else
n.Tag = n.Tag & c.GetObjectText_ & vbCrLf
For Each p In c.Properties_
If VarType(p.Value) < 9 Then
If CheckError(Err.Number, n, "Accessing results") Then
Exit Function
End If
n.Tag = n.Tag & p.Name & " = " & p.Value & vbCrLf
Else
n.Tag = n.Tag & p.Name & " was skipped, weird type." & vbCrLf
End If
Next p
n.Tag = n.Tag & "----" & vbCrLf
End If
Next c
ExecQuery = 1
End If
End Function
Private Function qConnect(n As Node) As Integer
Dim wlo As New SWbemLocator
Dim u As String
Dim p As String
Dim a As String
If frmMain.chkUserid.Value Then
u = vbNullString
Else
u = frmMain.txtUserid.text
End If
If frmMain.chkPassword.Value Then
p = vbNullString
Else
p = frmMain.txtPassword.text
End If
If frmMain.chkAuthority.Value Then
a = vbNullString
Else
a = frmMain.txtAuthority.text
End If
On Error Resume Next
'wlo.ConnectServer "\\" & frmMain.txtServer.text & "\root\sms\site_" & frmMain.txtSitecode.text, u, p, vbNullString, 0, a, Nothing, wsoServices
Set wsoServices = wlo.ConnectServer(frmMain.txtServer.text, "root\sms\site_" & frmMain.txtSitecode.text, u, p)
If CheckError(Err.Number, n, "Connecting to \\" & frmMain.txtServer.text & "\root\sms\site_" & frmMain.txtSitecode.text) Then Exit Function
qConnect = 1
End Function